package com.shujia.scala

object Demo18implicit {

  def main(args: Array[String]): Unit = {

    /**
      * 隐式转换
      *
      * 给对象动态增加新的方法
      *
      *
      */


    def fun(str: String) = {
      println(str)
    }

    fun("数加")

    //显示转换
    fun(1.toString)


    //隐式转换方法
    implicit def intToString(i: Int): String = "隐式转换:" + i

    // 方法在执行的时候会隐式的去调用intToString
    fun(1)

    /**
      * 隐式转换和方法名无关     和参数类型，返回值类型有关
      *
      * 同一个作用域中 不能有两个参数类型和返回值类型一样额隐式转换方法
      *
      */


    //导入隐式转换

    import com.shujia.scala.im._


    fun(1.0)


    val line = readLine()
    println(line)


  }


}

object im {
  implicit def doubleToString(i: Double): String = "隐式转换:" + i
}
